#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Name : file_util
# Author: ls_seraph@126.com
# Time  : 2021/3/6 22:12
import os
import datetime
from frame.common.util.config_util import config as yml
from frame.common.global_data.path_param import Param


# 集成创建文件夹、保存截图、获得截图名字等方法，与HTMLTestReportCN交互从而实现嵌入截图  -- Gelomen
class ReportDirectory(object):

    def __init__(self):

        # 项目路径+报告相对路径
        self.path = os.path.join(Param.get_value("path"), yml.get_report_value("path"))
        self.title = yml.get_report_value("title")
        self.name_format = yml.get_report_value("name_format")

        self.fm = yml.get_report_value("format")

    # 创建文件夹
    def create_dir(self, task_name=""):

        # reports/任务名/
        dir_path = os.path.join(self.path, task_name)
        # 判断文件夹是否存在，不存在则创建
        is_dir = os.path.isdir(dir_path)
        if not is_dir:
            os.makedirs(dir_path)
        return dir_path

    def report_name_format(self):
        """
        [日期 时间]标题.html
        :return:
        """
        now_time = datetime.datetime.now()
        day = now_time.strftime(self.fm["day"])
        time = now_time.strftime(self.fm["time"])
        return self.name_format.format(day=day, time=time, title=self.title)

    # 获取截图
    @staticmethod
    def get_screenshot(browser):
        i = 1
        img_dir = os.path.join(Param.get_value("dir_path"), yml.get_report_value("screent_shot"))

        # 判断文件夹是否存在，不存在则创建
        is_dir = os.path.isdir(img_dir)
        if not is_dir:
            os.makedirs(img_dir)

        img_path = img_dir + "/" + str(i) + ".png"

        # 有可能同个测试步骤出错，截图名字一样导致覆盖文件，所以名字存在则增加id
        while True:
            is_file = os.path.isfile(img_path)
            if is_file:
                i += 1
                img_path = img_dir + "/" + str(i) + ".png"
            else:
                break

        browser.get_screenshot_as_file(img_path)
        img_name = str(i) + ".png"

        browser_type = browser.capabilities["browserName"]
        browser_version = browser.capabilities["browserVersion"]
        browser_msg = browser_type + "(" + browser_version + ")"

        print("errorImg[" + img_name + "]errorImg, browser[" + browser_msg + "]browser")
